#! @PERL@
#+##############################################################################
#
# check_texinfo.pl: Extract texinfo commands from files
#
#    Copyright (C) 2002 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License,
# or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Code taken from the texi2html file in 2003.
#
#-##############################################################################

# This requires perl version 5 or higher
require 5.0;



use strict;
use Getopt::Long;
my $verbose;
if (!GetOptions ("verbose"  => \$verbose))
{
    die "usage: $0 [-v] file...\n";
}

die "Need file to check\n" unless @ARGV > 0;

my (%seen, %context);

while (<>)
{
    if (/\@(\*|\.|\:|\@|\{|\})/)
    {
        $seen{$&}++;
        $context{$&} .= "> $_" if $verbose;
        $_ = "$`XX$'";
        redo;
    }
    if (/\@(\w+)/)
    {
        my ($before, $match, $after);
        ($before, $match, $after) = ($`, $&, $');
        if ($before =~ /\b[-\w]+$/ && $after =~ /^[-\w.]*\b/)
        {                   # e-mail address
            $seen{'e-mail address'}++;
            $context{'e-mail address'} .= "> $_" if $verbose;
        }
        else
        {
            $seen{$match}++;
            $context{$match} .= "> $_" if $verbose;
        }
        $match =~ s/^\@/X/;
        $_ = "$before$match$after";
        redo;
    }
}

foreach (sort(keys(%seen)))
{
    if ($verbose)
    {
        print "$_\n";
        print $context{$_};
    }
    else
    {
        print "$_ ($seen{$_})\n";
    }
}


